package thefirst.support.model;

import java.sql.SQLException;
import java.util.List;

import javax.annotation.Resource;

import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.stereotype.Repository;
@Repository
public class NoticeDaoImpl implements NoticeDao {
	@Resource(name="sqlSessionTemplate")
	private SqlSessionTemplate sqlSessionTemplate;
	/**
	 * 공지사항을 DB에 저장
	 */
	@Override
	public int writeNotice(NoticeVO nvo) throws SQLException {
		return sqlSessionTemplate.insert("notice.writeNotice",nvo);
	}
	/**
	 * 글번호로 공지사항을 가져온다. 조회수 업데이트는 하지 않음..
	 */
	@Override
	public NoticeVO showNoticeInfoNoHits(int no) throws SQLException {
		NoticeVO nvo=sqlSessionTemplate.selectOne("notice.showNoticeInfoNoHits",no);
		System.out.println("Notice dao:"+nvo);
		return nvo;
	}
	/**
	 * 공지사항을 삭제
	 */
	@Override
	public void deleteNotice(int no) throws SQLException {
		sqlSessionTemplate.delete("notice.deleteNotice",no);
	}
	/**
	 * 공지사항 업데이트
	 */
	@Override
	public int updateNotice(NoticeVO nvo) throws SQLException {
		System.out.println("update notice:"+nvo);
		return sqlSessionTemplate.update("notice.updateNotice",nvo);
	}
	/**
	 * 페이지 번호로 리스트를 가져온다.
	 */
	@Override
	public List<NoticeVO> getNoticeList(String pageNo) throws SQLException {
		// TODO Auto-generated method stub
		return sqlSessionTemplate.selectList("notice.getNoticeList", pageNo);
	}
	/**
	 * 총 게시물의 수를 가져온다.
	 */
	@Override
	public int totalNoticeContent() throws SQLException {
		// TODO Auto-generated method stub
		return sqlSessionTemplate.selectOne("notice.totalNoticeContent");
	}
	/**
	 * 조회수를 올린다.
	 */
	@Override
	public int updateHits(int no) throws SQLException {
		// TODO Auto-generated method stub
		return sqlSessionTemplate.update("notice.updateHits",no);
	}
	/**
	 * 글삭제나 수정시 DB의 파일 이름들을 null로 만든다.
	 */
	@Override
	public int updateNoticeNoFile(int no) throws SQLException {
		int result=sqlSessionTemplate.update("notice.updateNoticeNoFile",no);
		System.out.println("deleteFile dao:"+result);
		return result;
	}
	/**
	 * 메인페이지의 left에 공지사항 글 5개 가져오기
	 */
	@Override
	public List<NoticeVO> getNoticeListForLeft() throws SQLException {
		return sqlSessionTemplate.selectList("notice.getNoticeListForLeft");
	}
	/**
	 * 제목으로 공지사항 검색하기
	 */
	@Override
	public List<NoticeVO> findNoticeListByTitle(NoticeSearchVO nsvo)
			throws SQLException {
		// TODO Auto-generated method stub
		return sqlSessionTemplate.selectList("notice.findNoticeListByTitle",nsvo);
	}
	/**
	 * 내용으로 공지사항 검색하기
	 */
	@Override
	public List<NoticeVO> findNoticeListByContent(NoticeSearchVO nsvo)
			throws SQLException {
		// TODO Auto-generated method stub
		return sqlSessionTemplate.selectList("notice.findNoticeListByContent",nsvo);
	}
	/**
	 * 제목으로 검색된 총 글 수
	 */
	@Override
	public int totalNoticeContentByTitle(String title) throws SQLException {
		// TODO Auto-generated method stub
		System.out.println("dao:"+title);
		return sqlSessionTemplate.selectOne("notice.totalNoticeContentByTitle",title);
	}
	/**
	 * 내용으로 검색된 총 글 수
	 */
	@Override
	public int totalNoticeContentByContent(String content) throws SQLException {
		// TODO Auto-generated method stub
		return sqlSessionTemplate.selectOne("notice.totalNoticeContentByContent",content);
	}

}
